// 消息通知服务
// 实际项目中，这里应该连接后端API

/**
 * 获取消息通知列表
 * @param {number} deliverymanId - 配送员ID
 * @returns {Promise<Array>} 通知列表
 */
export const getNotifications = async (deliverymanId = 1) => {
  try {
    // 模拟API调用延迟
    await new Promise(resolve => setTimeout(resolve, 500));

    // 模拟从数据库获取的、符合新表结构的数据
    // 在真实应用中，这里会发起一个API请求:
    // const response = await fetch(`/api/deliveryman/${deliverymanId}/notifications`);
    // const data = await response.json();
    // return data;

    const mockData = [
      {
        id: 1,
        deliveryman_id: 1,
        type: 'new_order',
        title: '新订单提醒',
        message: '您有新的配送订单待接单，请及时处理',
        is_read: 0,
        related_entity_id: 'ORDER12345',
        created_at: new Date(Date.now() - 2 * 60 * 1000).toISOString()
      },
      {
        id: 2,
        deliveryman_id: 1,
        type: 'system',
        title: '系统通知',
        message: '今日配送任务已完成80%，继续保持！',
        is_read: 0,
        related_entity_id: null,
        created_at: new Date(Date.now() - 10 * 60 * 1000).toISOString()
      },
      {
        id: 3,
        deliveryman_id: 1,
        type: 'weather',
        title: '天气提醒',
        message: '今日有雨，请注意配送安全',
        is_read: 0,
        related_entity_id: null,
        created_at: new Date(Date.now() - 30 * 60 * 1000).toISOString()
      },
      {
        id: 4,
        deliveryman_id: 1,
        type: 'earnings',
        title: '收入提醒',
        message: '上一笔订单收入 ¥12.50 已到账',
        is_read: 1,
        related_entity_id: 'ORDER12344',
        created_at: new Date(Date.now() - 1 * 60 * 60 * 1000).toISOString()
      },
      {
        id: 5,
        deliveryman_id: 1,
        type: 'task_update',
        title: '任务更新',
        message: '任务包 #KG20240729001 状态已更新为"配送中"',
        is_read: 1,
        related_entity_id: 'KG20240729001',
        created_at: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString()
      }
    ];
    
    return mockData;
  } catch (error) {
    console.error('获取通知列表失败:', error);
    throw error;
  }
};

/**
 * 标记通知为已读
 * @param {number} id - 通知ID
 * @returns {Promise<boolean>} 操作结果
 */
export const markNotificationAsRead = async (id) => {
  try {
    // 模拟API调用
    await new Promise(resolve => setTimeout(resolve, 200))
    
    // 实际项目中，这里应该调用后端API
    console.log(`标记通知 ${id} 为已读`)
    
    return true
  } catch (error) {
    console.error('标记通知已读失败:', error)
    throw error
  }
}

/**
 * 标记所有通知为已读
 * @returns {Promise<boolean>} 操作结果
 */
export const markAllNotificationsAsRead = async () => {
  try {
    // 模拟API调用
    await new Promise(resolve => setTimeout(resolve, 300))
    
    // 实际项目中，这里应该调用后端API
    console.log('标记所有通知为已读')
    
    return true
  } catch (error) {
    console.error('标记所有通知已读失败:', error)
    throw error
  }
}

/**
 * 删除通知
 * @param {number} id - 通知ID
 * @returns {Promise<boolean>} 操作结果
 */
export const deleteNotification = async (id) => {
  try {
    // 模拟API调用
    await new Promise(resolve => setTimeout(resolve, 200))
    
    // 实际项目中，这里应该调用后端API
    console.log(`删除通知 ${id}`)
    
    return true
  } catch (error) {
    console.error('删除通知失败:', error)
    throw error
  }
}

/**
 * 获取未读通知数量
 * @returns {Promise<number>} 未读数量
 */
export const getUnreadCount = async () => {
  try {
    // 模拟API调用
    await new Promise(resolve => setTimeout(resolve, 100))
    
    // 实际项目中，这里应该调用后端API
    return Math.floor(Math.random() * 5) // 0-4个未读通知
  } catch (error) {
    console.error('获取未读数量失败:', error)
    return 0
  }
} 